home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-02
/
mkmsgsrc.zip
/
MKGLOBT.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1992-09-19
|
3KB
|
148 lines
Unit MKGlobT;
{$I MKB.Def}
Interface
Type AddrType = Record {Used for Fido style addresses}
Zone: Word;
Net: Word;
Node: Word;
Point: Word;
End;
Type SecType = Record
Level: Word; {Security level}
Flags: LongInt; {32 bitmapped flags}
End;
{$I Compiled.Inc}
Const
BbsVersion = 'Mythical Kingdom Bbs - Version 0.00 Beta';
Copyright = 'Copyright 1992 by Mark May';
Contact = 'Contact 1:110/290 (513)237-7737 HST/V32';
Function AddrStr(Addr: AddrType): String;
Function Access(USec: SecType; RSec: SecType): Boolean;
Function EstimateXferTime(FS: LongInt; BaudRate: Word; Effic: Word): LongInt;
{Result in seconds}
Function NameCrcCode(Str: String): LongInt; {Get CRC code for name}
Function Flag2Str(Number: Byte): String;
Function Str2Flag(St: String): Byte;
Var
StartUpPath: String[128];
Const
UseEms: Boolean = True;
LocalMode: Boolean = False;
LogToPrinter: Boolean = False;
ReLoad: Boolean = False;
NodeNumber: Byte = 1;
OverRidePort: Byte = 0;
OverRideBaud: Word = 0;
ExitErrorLevel: Byte = 0;
TimeToEvent: LongInt = 0;
ShellToMailer: Boolean = False;
Implementation
Uses MKString, Crc32;
Function Flag2Str(Number: Byte): String;
Var
Temp1: Byte;
Temp2: Byte;
i: Word;
TempStr: String[8];
Begin
Temp1 := 0;
Temp2 := $01;
For i := 1 to 8 Do
Begin
If (Number and Temp2) <> 0 Then
TempStr[i] := 'X'
Else
TempStr[i] := '-';
Temp2 := Temp2 shl 1;
End;
TempStr[0] := #8;
Flag2Str := TempStr;
End;
Function Str2Flag(St: String): Byte;
Var
i: Word;
Temp1: Byte;
Temp2: Byte;
Begin
St := StripBoth(St,' ');
St := PadLeft(St,'-',8);
Temp1 := 0;
Temp2 := $01;
For i := 1 to 8 Do
Begin
If UpCase(St[i]) = 'X' Then
Inc(Temp1,Temp2);
Temp2 := Temp2 shl 1;
End;
Str2Flag := Temp1;
End;
Function AddrStr(Addr: AddrType): String;
Begin
If Addr.Point = 0 Then
AddrStr := Long2Str(Addr.Zone) + ':' + Long2Str(Addr.Net) + '/' +
Long2Str(Addr.Node)
Else
AddrStr := Long2Str(Addr.Zone) + ':' + Long2Str(Addr.Net) + '/' +
Long2Str(Addr.Node) + '.' + Long2Str(Addr.Point);
End;
Function Access(USec: SecType; RSec: SecType): Boolean;
Begin
If (USec.Level >= RSec.Level) Then
Access := ((RSec.Flags and Not(USec.Flags)) = 0)
Else
Access := False;
End;
Function EstimateXferTime(FS: LongInt; BaudRate: Word; Effic: Word): LongInt;
Begin
If BaudRate > 0 Then
EstimateXferTime := ((FS * 100) Div Effic) Div (BaudRate Div 10)
Else
EstimateXferTime := ((FS * 100) Div Effic) Div (960);
End;
Function NameCrcCode(Str: String): LongInt;
Var
NCode: LongInt;
i: WOrd;
Begin
NCode := UpdC32(Length(Str),$ffffffff);
i := 1;
While i < Length(Str) Do
Begin
NCode := Updc32(Ord(UpCase(Str[i])), NCode);
Inc(i);
End;
NameCrcCode := NCode;
End;
End.